﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using System.Management;
using System.Collections;
// namespaces necesarios para conexión a bd
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Data.SqlTypes;


using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;


namespace Persistencia_y_capa_de_negocio
{
    public class CADJuego
    {
        private static readonly CADJuego instancia = new CADJuego();
        public static CADJuego Instancia
        {
            get { return instancia; }
        }

        private string cadCon;  // Cadena de conexión conseguida desde app.config
        private SqlDataAdapter da;
        private SqlConnection c;
        private DataSet vdb;

        public CADJuego()
        {
            try
            {
                cadCon = ConfigurationManager.ConnectionStrings["conexion"].ConnectionString;
                
                vdb = new DataSet();
                c = new SqlConnection(cadCon);
                da = new SqlDataAdapter("Select * from juego", c);

                da.Fill(vdb, "Juego");    // Ahora tenemos todo el contenido de edificios en local.
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }


        }

        /// <summary>
        /// devuelve el enJuego para cargar la unformación
        /// </summary>
        /// <returns></returns>
        public ENJuego devuelveJuego()
        {
            ENJuego juego = new ENJuego();

            DataTable t = new DataTable();
            DataRow dr = null;

            t = vdb.Tables["Juego"];
            
            try
            {
                dr = t.Select()[0];
                juego.Id = Convert.ToInt32(dr["id"]);
                juego.Nombre = dr["nombre"].ToString().Trim();
                juego.RutaLog = dr["imagen"].ToString().Trim();
                juego.Descripcion = dr["descripcion"].ToString().Trim();
            }
            catch (Exception)
            {
                juego.Id = 0;
                juego.Nombre = " ";
                juego.RutaLog = "logotipo";
                juego.Descripcion = " ";
            }
            

            return juego;
        }

        /// <summary>
        /// Actualiza los datos del juego
        /// </summary>
        /// <param name="juego"></param>
        public void ActualizaJuego(ENJuego juego)
        {
            DataTable t = new DataTable();

            t = vdb.Tables["Juego"];

            // Ahora tengo la tabla juego.
            DataRow r = null;

            string select = "id = \'" + juego.Id + "\'";
            try
            {
                //Si existe, significa que hay un juego ya, así que solo modificaremos.
                r = t.Select(select)[0];
                r["nombre"] = juego.Nombre;
                r["imagen"] = juego.RutaLog;
                r["descripcion"] = juego.Descripcion;

                SqlCommandBuilder command = new SqlCommandBuilder(da);

                // Actualizamos los cambios en la BD real.
                da.Update(vdb, "juego");
            }
            catch
            {
                r = t.NewRow();


                r["nombre"] = juego.Nombre;
                r["imagen"] = juego.RutaLog;
                r["descripcion"] = juego.Descripcion;

                // Añadimos la nueva fila a la tabla virtual.
                t.Rows.Add(r);

                SqlCommandBuilder command = new SqlCommandBuilder(da);

                // Actualizamos los cambios en la BD real.
                da.Update(vdb, "juego");
            }
        }
    }
}